package com.ctrip.framework.apollo.tracer.internals;

import com.ctrip.framework.apollo.core.utils.ClassLoaderUtil;
import com.ctrip.framework.apollo.tracer.internals.cat.CatMessageProducer;
import com.ctrip.framework.apollo.tracer.internals.cat.CatNames;
import com.ctrip.framework.apollo.tracer.spi.MessageProducer;
import com.ctrip.framework.apollo.tracer.spi.MessageProducerManager;

/**
 * @author Jason Song(song_s@ctrip.com)
 */
public class DefaultMessageProducerManager implements MessageProducerManager {

    private static MessageProducer producer;

    public DefaultMessageProducerManager() {
        if (ClassLoaderUtil.isClassPresent(CatNames.CAT_CLASS)) {
            producer = new CatMessageProducer();
        } else {
            producer = new NullMessageProducerManager().getProducer();
        }
    }

    @Override
    public MessageProducer getProducer() {
        return producer;
    }

}
